/**
 * Created by lvk on 2015/9/30.
 */

var wx_emoji_map = {
    // tab1
    "/::)":'100.png',
    "/::~":'101.png',
    "/::B":'102.png',
    "/::|":'103.png',
    "/:8-)":'104.png',
    "/::<":'105.png',
    "/::$":'106.png',
    "/::X":'107.png',
    "/::Z":'108.png',
    "/::'(":'109.png',
    "/::-|":'110.png',
    "/::@":'111.png',
    "/::P":'112.png',
    "/::D":'113.png',
    "/::O":'114.png',
    "/::(":'115.png',
    "/::+":'116.png',
    "/:--b":'117.png',
    "/::Q":'118.png',
    "/::T":'119.png',
    "/:,@P":'120.png',
    "/:,@-D":'121.png',
    "/::d":'122.png',
    "/:,@o":'123.png',

    // tab2
    "/::g":'124.png',
    "/:|-)":'125.png',
    "/::!":'126.png',
    "/::L":'127.png',
    "/::>":'128.png',
    "/::,@":'129.png',
    "/:,@f":'130.png',
    "/::-S":'131.png',
    "/:?":'132.png',
    "/:,@x":'133.png',
    "/:,@@":'134.png',
    "/::8":'135.png',
    "/:,@!":'136.png',
    "/:!!!":'137.png',
    "/:xx":'138.png',
    "/:bye":'139.png',
    "/:wipe":'140.png',
    "/:dig":'141.png',
    "/:handclap":'142.png',
    "/:&-(":'143.png',
    "/:B-)":'144.png',
    "/:<@":'145.png',
    "/:@>":'146.png',
    "/::-O":'147.png',

    // tab3
    "/:>-|":'148.png',
    "/:P-(":'149.png',
    "/::'|":'150.png',
    "/:X-)":'151.png',
    "/::*":'152.png',
    "/:@x":'153.png',
    "/:8*":'154.png',
    "/:pd":'155.png',
    "/:<W>":'156.png',
    "/:beer":'157.png',
    "/:basketb":'158.png',
    "/:oo":'159.png',
    "/:coffee":'160.png',
    "/:eat":'161.png',
    "/:pig":'162.png',
    "/:rose":'163.png',
    "/:fade":'164.png',
    "/:showlove":'165.png',
    "/:heart":'166.png',
    "/:break":'167.png',
    "/:cake":'168.png',
    "/:li":'169.png',
    "/:bome":'170.png',
    "/:kn":'171.png',

    // tab4
    "/:footb":'172.png',
    "/:ladybug":'173.png',
    "/:shit":'174.png',
    "/:moon":'175.png',
    "/:sun":'176.png',
    "/:gift":'177.png',
    "/:hug":'178.png',
    "/:strong":'179.png',
    "/:weak":'180.png',
    "/:share":'181.png',
    "/:v":'182.png',
    "/:@)":'183.png',
    "/:jj":'184.png',
    "/:@@":'185.png',
    "/:bad":'186.png',
    "/:lvu":'187.png',
    "/:no":'188.png',
    "/:ok":'189.png',
    "/:love":'190.png',
    "/:<L>":'191.png',
    "/:jump":'192.png',
    "/:shake":'193.png',
    "/:<O>":'194.png',
    "/:circle":'195.png',

    // tab5
    "/:kotow":'196.png',
    "/:turn":'197.png',
    "/:skip":'198.png',
    "/:oY":'199.png',
    "\uE415":'200.png',
    "\uE40C":'201.png',
    "\uE412":'202.png',
    "\uE409":'203.png',
    "\uE410":'204.png',
    "\uE40D":'205.png',
    "\uE107":'206.png',
    "\uE403":'207.png',
    "\uE405":'208.png',
    "\uE40A":'209.png',
    "\uE40E":'210.png',
    "\uE11A":'211.png',
    "\uE11B":'212.png',
    "\uE437":'213.png',
    "\uE41D":'214.png',
    "\uE14C":'215.png',
    "\uE12F":'216.png',
    "\uE34B":'217.png',
    "\uE312":'218.png',
    "\uE112":'219.png'
};

// 用于处理文本框中的emoji表情unicode码转义的数组
var wx_emoji_unicode = [
    "\\uE415",
    "\\uE40C",
    "\\uE412",
    "\\uE409",
    "\\uE410",
    "\\uE40D",
    "\\uE107",
    "\\uE403",
    "\\uE405",
    "\\uE40A",
    "\\uE40E",
    "\\uE11A",
    "\\uE11B",
    "\\uE437",
    "\\uE41D",
    "\\uE14C",
    "\\uE12F",
    "\\uE34B",
    "\\uE312",
    "\\uE112"
];

// 处理wx_emoji_unicode数组中的unicode表情转义，返回对应的字符串数据，以便匹配wx_emoji_map中的数据进行替换显示表情
function unicode2native(data) {
    var _data = data.split('\\u');
    var nativeValue = _data[0];
    for (var i = 1; i < _data.length; i++) {
        var code = _data[i];
        // 如果\u后的值小于4位，作为普通带\u的字符串处理
        if (code.length < 4) {
            nativeValue += '\\u' + code;
            continue;
        }

        // 如果\u后的值大于等于4位，截断前4位，检查是否为表情的unicode字符，是则拼接解析后的字符，否则按原字符拼接
        var _s4 = code.substring(0, 4);
        var _unicode = '\\u' + _s4;
        var _index = $.inArray(_unicode, wx_emoji_unicode);
        if (_index != -1) {
            nativeValue += String.fromCharCode(parseInt("0x" + _s4));
        } else {
            nativeValue += _unicode;
        }

        // 大于4位时，将多余的字符串拼接
        if (code.length > 4) {
            nativeValue += code.substring(4, code.length);
        }
    }

    return nativeValue;
}

$(function(){
    //表情解析
    $.fn.extend({
        replaceface:function(faces){
            var root = $('#root').val();
            $.each(wx_emoji_map, function(i, v){
                // 将表情符号解析码中的特殊字符转义处理
                var _i = i.replace(/([-[\]{}()*+?.,\\^$|#/])/g, "\\$1");
                // 通过正则表达式将消息中的表情符号解析码替换为表情图片
                faces = faces.replace(new RegExp(_i, "g"), "<img src='"+root+"/resources/wapItem/wap_new/images/im/weichat/"+v+"' alt='' class='faceSmall' width='64' height='64'/>");
            });
            $(this).html(faces);
        }
    });
});